package PruebasUnitarias;

import junit.framework.TestCase;
import Modelo.*;

public class TeletransportacionTest extends TestCase {
	private Bloque[][] bloques;
	private Mapa mapa;
	
	
	protected void setUp() throws Exception {
		super.setUp();
		mapa= new Mapa(); 
		bloques= new Bloque[3][25];
		
		for(int i=0;i<3;i++)
			for(int j=0;j<25;j++)
				if(i==1&&((j<3&&j>0)||(j<22&&j>19)))
					bloques[i][j]= new Vacio(mapa);
				else
					bloques[i][j]= new Tierra(mapa);
		bloques[1][1]= new NaveEspacial(mapa);
		bloques[1][15]= new NaveEspacialLlegada(mapa);
		mapa.inicializarMapa(bloques);
	}
	
	public void testEjecutarSobre(){
		PoseedorDeHabilidad pooglin= new Pooglin(mapa);
		PoseedorDeHabilidad pooglin2= new Pooglin(mapa);
		Habilidad teletransportacion= new Teletransportacion();
		Habilidad teletransportacion2= new Teletransportacion();
		pooglin.asignarHabilidad(teletransportacion);
		pooglin2.asignarHabilidad(teletransportacion2);
		bloques[1][1].alojar(pooglin);
		bloques[1][2].alojar(pooglin2);
  		for(int i=0;i<5;i++){
 
			teletransportacion.ejecutarSobre(pooglin);
			teletransportacion2.ejecutarSobre(pooglin2);
		}
		assertTrue(pooglin.estaVivo());
		assertFalse(pooglin2.estaVivo());
		assertTrue(mapa.getBloqueDondeEsta(pooglin)==bloques[1][21]);	
	}
}
